/*** 前端封装API接口模块 ：订单Order模块
 */
import http from "@/utils/request";

//===============================================
// 1 创建订单（从商品列表创建） POST /order/insert
// 参数：addressId（收货地址id，支持 address_id 别名）、orderItemList（订单项数组，支持 goods_list/goodsList/orderItemList/order_item_list 别名）、remark（备注，可选）
export function createOrderAPI(form) {
  return http.request({
    url: "order/insert",  // 后端接口路径调整为/insert
    method: "post",
    data: form,  // 直接传递表单对象，与后端OrderInsertForm对应
  });
}

//===================================================
// 2 查询我的订单列表（分页） GET /order/getMyList
// 参数：分页参数（pageNum, pageSize）、状态筛选（status，可选）
export function getOrderListAPI(form) {
  return http.request({
    url: "order/getMyList",  // 后端接口路径调整为/getMyList
    method: "get",
    params: form,  // 分页参数通过query传递
  });
}

//===================================================
// 3 查询订单详情 GET /order/{orderId}
// 参数：orderId（订单id，路径参数）
export function getOrderDetailByIdAPI(orderId) {
  // 校验orderId有效性
  const id = Number(orderId);
  if (!orderId || isNaN(id) || id <= 0) {
    return Promise.reject(new Error("无效的订单ID"));
  }
  // 确保orderId是数字类型，避免传递字符串导致后端类型不匹配
  return http.request({
    url: `order/${id}`,  // 后端使用路径参数，确保是数字
    method: "get",
  });
}

//===================================================
// 4 取消订单（更改订单状态） POST /order/updateStatus
// 参数：id（订单id）、status（状态：1取消）
export function cancleOrderByIdAPI(orderId) {
  return http.request({
    url: "order/updateStatus",  // 后端接口路径调整为/updateStatus
    method: "post",
    data: {
      id: orderId,
      status: 1  // 状态1表示取消，与后端定义一致
    }
  });
}

//===================================================
// 5 删除订单（如需保留，需后端补充实现）
// 注意：当前后端未提供删除接口，若需要请后端添加后再实现
export function deleteOrderByIdAPI(id) {
  return http.request({
    url: `order/delete/${id}`,  // 假设后端补充的删除接口路径
    method: "delete",
  });
}

//===================================================
// 6 完成订单（更改订单状态为2）
export function finishOrderByIdAPI(orderId) {
  return http.request({
    url: "order/updateStatus",
    method: "post",
    data: {
      id: orderId,
      status: 2  // 状态2表示完成，与后端定义一致
    }
  });
}